#include "qabstractstylesheetwidget.h"

#include "../../sharedLib/stylesheet/qabstractstylesheetitem.h"
#include "../../sharedLib/stylesheet/qstylesheetitemfactory.h"
#include "../../sharedLib/qabstractproperty.h"

using namespace CORELIB;

QAbstractStylesheetWidget::QAbstractStylesheetWidget(QWidget *parent):
    QWidget(parent)
{
}

QString QAbstractStylesheetWidget::getSheet()
{
    return m_stylesheet;
}

tagStylesheetItem QAbstractStylesheetWidget::getItem()
{
    return m_item;
}

void QAbstractStylesheetWidget::setItem(const tagStylesheetItem &item)
{
    m_item=item;
    makeStylesheet();
}

void QAbstractStylesheetWidget::makeStylesheet()
{
    SHAREDLIB::QAbstractStylesheetItem* maker=SHAREDLIB::QStylesheetItemFactory::createItem(m_type);
    if(maker!=NULL)
    {
        QVariant v;
        v.setValue<tagStylesheetItem>(m_item);
        maker->setValue(v);
        QString str=maker->makeStylesheet();
        if(m_stylesheet!=str)
        {
            m_stylesheet=str;
            emit stylesheetChanged();
        }
        delete maker;
    }
}

void QAbstractStylesheetWidget::setType(const QString type)
{
    m_type=type;
}

void QAbstractStylesheetWidget::setDefault(const tagStylesheetItem &item)
{
    m_default=item;
}

void QAbstractStylesheetWidget::clear()
{
    m_item.m_attributes.clear();
    setItem(m_item);
}

void QAbstractStylesheetWidget::reset()
{
    setItem(m_default);
}
